package cn.tedu.flower.manage.content.service;

import cn.tedu.flower.manage.common.pojo.vo.PageData;
import cn.tedu.flower.manage.common.security.CurrentPrincipal;
import cn.tedu.flower.manage.content.pojo.param.FadebackAddNewParam;
import cn.tedu.flower.manage.content.pojo.param.MemberAddNewParam;
import cn.tedu.flower.manage.content.pojo.param.MemberUpdateParam;
import cn.tedu.flower.manage.content.pojo.vo.MemberListItemVO;
import cn.tedu.flower.manage.content.pojo.vo.MemberStandardVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Transactional
public interface IMemberService {

    /**
     * 会员“是否启用”的状态文本
     */
    String[] STATUS_TEXT = {"启用", "被禁用"};

    /**
     * 新会员注册
     * @param currentPrincipal  当事人
     * @param remoteAddr        ip地址
     * @param memberAddNewParam 新会员信息
     */
    void addNew(CurrentPrincipal currentPrincipal, String remoteAddr, MemberAddNewParam memberAddNewParam);

    /**
     * 根据id删除会员
     * @param id 尝试删除的会员id
     */
    void delete(Long id);

    /**
     * 修改会员信息
     * @param memberUpdateParam 封装的会员信息
     */
    void update(MemberUpdateParam memberUpdateParam);

    /**
     * 启用会员
     * @param id 会员id
     */
    void setStatusOn(Long id);

    /**
     * 禁用会员
     * @param id 会员id
     */
    void setStatusOff(Long id);
    /**
     *根据id查询会员信息
     * @param id 会员id
     * @return 匹配的会员信息,如果没有匹配的数据,则返回null
     */
    MemberStandardVO selectById(Long id);
    /**
     * 根据用户名查询会员信息
     * @param username 会员用户名
     * @return 匹配的会员信息,如果没有匹配的数据,则返回null
     */
    MemberStandardVO selectByUsername(String username);

    /**
     * 根据昵称查询会员信息
     * @param nickname 会员的昵称
     * @return 匹配的会员信息,如果没有匹配的数据,则返回null
     */
    MemberStandardVO selectByNickname(String nickname);

    /**
     * 查询全部会员信息
     * @return 返回所有会员的信息
     */
    PageData<MemberListItemVO> selectAll(Integer pageNum, Integer pageSize);

    /**
     * 查询全部会员信息
     * @return 返回所有会员的信息
     */
    PageData<MemberListItemVO> selectAll(Integer pageNum);
}
